package cstring

import (
	"strconv"
)

// @title Int64ToString
// @description int64专string
func Int64ToString(value int64) string {
	return strconv.FormatInt(value, 10)
}

// @title BoolToString
// @description  布尔型 专 string
func BoolToString(value bool) string {
	if value {
		return "true"
	}
	return "false"
}

// @title IntToString
// @description int型 专string
func IntToString(value int) string {
	return strconv.Itoa(value)
}

// @title HideMiddleString
// @description 中间的一部分字符串用 * 遮盖, 超短字符串注意暴露
// @params src 源头字符串
// @params headLength 保留头部长度
// @params endLength　保留尾部长度
// @params coverArgs　遮盖的字符串　默认*** 可选
func HideMiddleString(src string, headLength int, endLength int, coverArgs ...string) string {
	strArr := []rune(src)
	if headLength == 0 {
		headLength = 1
	}

	if endLength == 0 {
		endLength = 1
	}

	srcStrLength := len(strArr)
	if srcStrLength == 1 {
		return src
	}

	headStr := ""
	endStr := ""
	for i := 0; i < len(strArr); i++ {
		if i < headLength {
			headStr += string(strArr[i])
		}

		if i >= (len(strArr) - headLength) {
			endStr += string(strArr[i])
		}
	}

	coverStr := "***"
	if len(coverArgs) > 0 && coverArgs[0] != "" {
		coverStr = coverArgs[0]
	}

	return headStr + coverStr + endStr
}
